/**
	url	String	是		开发者服务器接口地址
	data	Object/String/ArrayBuffer	否		请求的参数
	header	Object	否		设置请求的 header，header 中不能设置 Referer。
	method	String	否	GET	（需大写）有效值：OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE, CONNECT
	dataType	String	否	json	如果设为 json，会尝试对返回的数据做一次 JSON.parse
	responseType	String	否	text	设置响应的数据类型。合法值：text、arraybuffer
	success	Function	否		收到开发者服务成功返回的回调函数
	fail	Function	否		接口调用失败的回调函数
	complete	Function	否		接口调用结束的回调函数（调用成功、失败都会执行）
	success 返回参数说明

	response 参数	类型	说明
	data	Object/String/ArrayBuffer	开发者服务器返回的数据
	statusCode	Number	开发者服务器返回的 HTTP 状态码
	header	Object	开发者服务器返回的 HTTP Response Header
	例子:
	uni.request({
		url: 'https://www.example.com/request', //仅为示例，并非真实接口地址。
		data: {
			text: 'uni.request'
		},
		header: {
			'custom-header': 'hello' //自定义请求头信息
		},
		success: (res) => {
			console.log(res.data);
			this.text = 'request success';
		}
	});
 */
import {
	AJAX_CONFIG
} from "@/config"
import {
	requestBeforeFun,
	responseBeforeFun
} from "@/interceptors"
import _assign from 'lodash/assign'
export default (config) => new Promise((resolve, reject) => {
	config.complete = (res) => {
		res = typeof(responseBeforeFun) == "function" ?
			responseBeforeFun(res) : res;
		//  request請求访问成功
		if (res.statusCode === 200) {
			// 接口请求成功
			resolve(res.data);
		} else {
			reject(res);
		}
	}
	config = typeof(requestBeforeFun) == "function" ?
		requestBeforeFun(_assign({}, AJAX_CONFIG, config)) : _assign({}, AJAX_CONFIG, config);
	uni.request(config)
})
